// webpack.dll.config.js

const path = require('path');
const webpack = require('webpack');
const WebpackParallelUglifyPlugin = require('webpack-parallel-uglify-plugin');

// 需要打包到一起的js文件
const vendors = [
	'vue',
	'vue-router',
	'vuex',
	'axios',
	'qs',
];

module.exports = {
	// 也可以设置多个入口，多个vendor，就可以生成多个bundle
	entry: {
		vendors,
	},

	// 输出文件的名称和路径
	output: {
		/**
         * dll 输出路径
         */
		filename: '[name].app.js',
		path: path.join(__dirname, '../../public/', 'static'),

		/**
         * 这个是把 Dll 输出成一个 全局 module 如 window.vendors_204630185ecf84c289ae
         * 这个选项只是为了让 dll 变成全局输出时才有用， 且需要和 DllPlugin 的 name 一致
         */
		library: '[name]_[chunkhash]',
	},

	plugins: [
		new webpack.DllPlugin({
			path: 'manifest.json',
			name: '[name]_[chunkhash]',
			context: __dirname,
		}),
		// @link https://github.com/mishoo/UglifyJS2
		new WebpackParallelUglifyPlugin({
			uglifyJS: {
				mangle: false,
				output: {
					beautify: false,
					comments: false,
				},
				compress: {
					warnings: false,
					drop_console: true,
					collapse_vars: true,
					reduce_vars: true,
				},
			},
		}),
	],
};
